var obj1 = {
    name:'sven'
}
var obj2 = {
    geetName:function () {
        return this.name
    }
}
console.log(obj2.geetName.apply(obj1));

Function.prototype.uncurring = function () {
    var self = this;
    return function () {
        var obj = Array.prototype.shift.call(arguments);
        return self.apply(obj,arguments)
    }
}
var push = Array.prototype.push.uncurring();
(function () {
    push(arguments,4);
    console.log(arguments);
})(1,2,3)